home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / geos / programming / SpringBoard.lnx / Blackout 2 (.txt) next >
Encoding:
GEOS ConVerT  |  1999-06-16  |  14.5 KB  |  493 lines

  1. bLACKOUT 2
  2. prg FORMATTED geos FILE v1.0
  3. wRITE iMAGE v2.0
  4. GEOwRITE    v2.0
  5. D +# K" T
  6.  *** 
  7. @bLACKOUT 2
  8.  *** BY jIM hOLLOWAY
  9.  *** tHIS IS THE SOURCE FILE FOR blackout 2.
  10.  *** iT IS WRITTEN FOR THE springboard aSSEMBLER, ALSO BY jIM hOLLOWAY.
  11.  *** equates FROM "the official geos programmer's reference guide"
  12.  ***   dOCUMENTED geos kERNAL rOUTINES
  13.  ***     iCONS
  14. dOiCNSEQU$C15AdOiCONS, P.28
  15.  ***     tEXT IN geos
  16. pUTsTREQU$C148pUTsTRING, P.108
  17. I_pTsTEQU$C1AEI_pUTsTRING, P.108
  18. pUTdECEQU$C184pUTdECIMAL, P.109
  19. gETsTREQU$C1BAgETsTRING, P.111
  20.  ***     cHARACTER lEVEL rOUTINES
  21. gTnXTcEQU$C2A7gETnEXTcHAR, P.119
  22. iNITtpEQU$C1C0iNITtEXTpROMPT, P.120
  23. pRMPoNEQU$C29BpROMPToN, P.121
  24. pRMPoFEQU$C29EpROMPToFF, P.122
  25. pUTCHREQU$C145pUTCHAR, P.123
  26. gRrLsZEQU$C1B1gETrEALsIZE, P.125
  27. gTcHwDEQU$C1C9gETcHARwIDTH, P.126
  28. lDcHsTEQU$C1CClOADcHARsET, P.132
  29. sYSfNTEQU$C14BuSEsYSTEMfONT, P.133
  30.  ***     iNPUT dRIVER
  31. iNITmSEQU$FE80iNITmOUSE, P.138
  32. sLOWmSEQU$FE83sLOWmOUSE, P.142
  33. uPDTmSEQU$FE86uPDATEmOUSE, PP.144,145
  34. sTmSmDEQU$C14EsTARTmOUSEmODE, P.149
  35. mSEoFFEQU$C18DmOUSEoFF, P.150
  36. mSEuPEQU$C18AmOUSEuP, P.151
  37. iSmSrGEQU$C2B3iSmSEiNrEGION, P.153
  38.  ***     sPRITE sUPPORT
  39. dRAWsPEQU$C1C6dRAWsPRITE, P.172
  40. pOSsPREQU$C1CFpOSsPRITE, P.173
  41. eNBLsPEQU$C1D2eNABLsPRITE, P.174
  42. dSBLsPEQU$C1D5dISABLsPRITE, P.175
  43.  ***     pROCESS sUPPORT
  44. iNITpREQU$C103iNITpROCESSES, P.180
  45. rSTRTpEQU$C106rESTSRTpROCESS, P.181
  46. bLCKpREQU$C10CbLOCKpROCESS, P.182
  47. uBLKpREQU$C10FuNBLOCKpROCESS, P.182
  48. fREZpREQU$C112fREEZEpROCESS, P.183
  49. uNFRZpEQU$C115uNFREEZEpROCESS, P.183
  50. sLEEPEQU$C199sLEEP, PP.184,185
  51. eNBLpREQU$C109eNABLEpROCESS, P.186
  52.  ***     mATH lIBRARY
  53. dsHFTlEQU$C15DdsHIFTlEFT, P.188
  54. dsHFTrEQU$C262dsHIFTrIGHT, P.189
  55. bbmULTEQU$C160bbmULT, P.190
  56. bmULTEQU$C163bmULT, P.191
  57. dmULTEQU$C166dmULT, P.192
  58. dDIVEQU$C169dDIV, P.193
  59. dsDIVEQU$C16CdsDIV, P.194
  60. dABSEQU$C16FdABS, P.195
  61. dNEGATEQU$C172dNEGATE, P.196
  62. dDECEQU$C175dDEC, P.197
  63. gTrNDMEQU$C187gETrANDOM, P.198
  64.  *** gENERAL lIBRARY rOUTINES
  65. cPYsTREQU$C265cOPYsTRING, P.200
  66. cPYfsTEQU$C268cOPYfsTRING, P. 201
  67. cMPsTREQU$C26BcMPsTRING, P.202
  68. cMPfsTEQU$C26EcMPfsTRING, P.203
  69. pANICEQU$C2C2pANIC - rOLL oVER AND dIE, P.204
  70. mOVdATEQU$C17EmOVEdATA, P.205
  71. I_mVdTEQU$C1B7I_mOVEdATA, P.205
  72. cLRrAMEQU$C178cLEARrAM, P.206
  73. fILrAMEQU$C17BfILLrAM, P.207
  74. I_fLrMEQU$C1B4I_fILLrAM, P.207
  75. iNITrMEQU$C181iNITrAM, PP.208,209
  76. cALrTNEQU$C1D8cALLrOUTINE, P.210
  77. gTsRnMEQU$C196gETsERIALnUMBER, P.211
  78. tbASICEQU$C241tObASIC, P.212
  79. fRSTiNEQU$C271fIRSTiNIT, P.213
  80. crcEQU$C20Ecrc, P.214
  81. cHNGddEQU$C2BCcHANGEdISKdEVICE, P.215
  82.  ***     dIALOG bOXES
  83. ddLGbXEQU$C256dOdLGbOX, P.231
  84. rSTRfdEQU$C2BFrSTRfRMdIALOG, P.232
  85.  ***     hIGH-lEVEL fILE rOUTINES
  86. sETdVCEQU$C2B0sETdEVICE, P.252
  87. oPNdSKEQU$C2A1oPENdISK, P.253
  88. gTpcdnEQU$C298gETpTRcURdKnM, P.254
  89. sgeosdEQU$C1EAsETgeosdISK, P.255
  90. cHKdKgEQU$C1DEcHKdKgeos, P.256
  91. fNDftPEQU$C23BfINDftYPES, PP.257,258
  92. gETfILEQU$C208gETfILE, PP.259-262
  93. fNDfILEQU$C20BfINDfILE, P.263
  94. sAVfILEQU$C1EDsAVEfILE, PP.264,265
  95. dELfILEQU$C238dELETEfILE, PP.266,267
  96. rNMfILEQU$C259rENAMEfILE, P.268
  97. edSKtPEQU$C22CeNTERdESKtOP, P.269
  98. cLCbfREQU$C1DBcALCbLKSfREE, P.270
  99.  ***     iNTERMEDIATE lEVEL
  100. gETbLKEQU$C1E4gETbLOCK, PP.272,273
  101. pUTbLKEQU$C1E7pUTbLOCK, PP.274,275
  102. gTfhiNEQU$C229gETfhDRiNFO, P.276
  103. rEADfLEQU$C1FFrEADfILE, P.277
  104. wRITEfEQU$C1F9wRITEfILE, PP.278,279
  105. rEADbTEQU$C2B6rEADbYTE, P.280
  106. gTdRhDEQU$C247gETdIRhEAD, P.281
  107. pTdRhDEQU$C24ApUTdIRhEAD, P.282
  108. nEWdSKEQU$C1E1nEWdISK, P.283
  109. lDaPLCEQU$C21DlDaPPLIC - lOAD aPPLICATION fILE, PP.284-286
  110. lDfILEEQU$C211lDfILE - lOAD fILE, PP.287,288
  111. gTfRdbEQU$C1F6gETfREEdIRbLK - gET fREE dIRECTORY bLOCK, PP.289,290
  112. bLKaLCEQU$C1FCbLKaLLOC, PP.291,292
  113. nXTbLaEQU$C24DnXTbLKaLLOC, PP.293,294
  114. sTnXTfEQU$C292sETnEXTfREE, P.295
  115. fNDbbTEQU$C2ADfINDbambIT, P.296
  116. fREbLKEQU$C2B9fREEbLOCK, P.297
  117. sTgdReEQU$C1F0sETgdIReNTRY, PP.298,299
  118. bLDgdeEQU$C1F3bLDgdIReNTRY - bUILD geos dIRECTORY eNTRY, PP.300,301
  119. fLWcHNEQU$C205fOLLOWcHAIN, P.301
  120. fSTdLfEQU$C244fASTdELfILE, PP.302,303
  121. fREfILEQU$C226fREEfILE, P.304
  122.  ***     pRIMITIVE rOUTINES
  123. iNITioEQU$C25CiNITfORio, P.306
  124. dONEioEQU$C25FdONEwITHio, P.307
  125. pRGtRBEQU$C235pURGEtURBO, P.308
  126. eNTtRBEQU$C214eNTERtURBO, P.309
  127. rEADbKEQU$C21ArEADbLOCK, PP.310,311
  128. wRITEbEQU$C220wRITEbLOCK, P.312
  129.  ***     vlir fILES
  130. oPENrfEQU$C274oPENrECORDfILE, P.318
  131. cLSErfEQU$C277cLOSErECORDfILE, P.319
  132. uPDTrfEQU$C295uPDATErECORDfILE, P.320
  133. pREVrCEQU$C27DpREVIOUSrECORD, P.321
  134. nXTrECEQU$C27AnEXTrECORD, P.321
  135. pNTrECEQU$C280pOINTrECORD, P.321
  136. dELrECEQU$C283dELETErECORD, P.322
  137. wRITErEQU$C28FwRITErECORD, P.323
  138. rEADrCEQU$C28CrEADrECORD, P.324
  139.  ***     pRINTER dRIVERS
  140. iNITfpEQU$7900iNITfORpRINT, P.335
  141. gETdIMEQU$790CgETdIMENSIONS, P.336
  142. sTpRNTEQU$7903sTARTpRINT, P.337
  143. pRNTbFEQU$7906pRINTbUFFER, P.338
  144. sTOPpREQU$7909sTOPpRINT, P.339
  145. sTasciEQU$7912sTARTascii, P.340
  146. pRasciEQU$790FpRINTascii, P.341
  147.  ***   uNDOCUMENTED geos kERNAL rOUTINES
  148. bOOTgEQU$C000
  149. rEhNDLEQU$C003
  150. iNTRPmEQU$C100
  151. rCVRmNEQU$C154
  152. rCVRamEQU$C157
  153. cLRmSmEQU$C19C
  154. mAINlPEQU$C1C3
  155. sMLpcHEQU$C202
  156. lDdSKaEQU$C217
  157. vRwRTbEQU$C223
  158. sTRTaPEQU$C22F
  159. eXITtBEQU$C232
  160. rSTRaPEQU$C23E
  161. iNSRTrEQU$C286
  162. aPNDrCEQU$C289
  163. dOiLrTEQU$C2A4
  164. sTASHrEQU$C2C8
  165. fETCHrEQU$C2CB
  166. sWAPrEQU$C2CE
  167. vERFYrEQU$C2D1
  168. dOroPEQU$C2D4
  169.  ***   cONSTANTS
  170. eofEQU0
  171. nullEQU0
  172. bsEQU8
  173. tabEQU9
  174. fwEQU9
  175. lfEQU10
  176. homeEQU11
  177. upEQU12
  178. pbEQU12
  179. crEQU13
  180. unEQU14
  181. uoEQU15
  182. esc_grEQU16
  183. esc_rlEQU17
  184. rnEQU18
  185. rfEQU19
  186. gtxEQU20
  187. gtyEQU21
  188. gtxyEQU22
  189. ncEQU23
  190. bnEQU24
  191. inEQU25
  192. onEQU26
  193. ptEQU27
  194. invldEQU31
  195. fN1EQU1
  196. fN2EQU2
  197. fN3EQU3
  198. fN4EQU4
  199. fN5EQU5
  200. fN6EQU6
  201. fN7EQU14
  202. fN8EQU15
  203. cRSRuEQU16
  204. cRSRdEQU17
  205. hOMkEYEQU18
  206. cLRkEYEQU19
  207. lFTaRWEQU20
  208. uPaRWEQU21
  209. sTOPkYEQU22
  210. rUNkEYEQU23
  211. pNDkEYEQU24
  212. cRSRlEQU8
  213. cRSRrEQU30
  214. dELkEYEQU29
  215. iNSTkYEQU28
  216. !EQU33
  217. "EQU!+1
  218. nMBREQU"+1#
  219. dLLREQUnMBR+1$
  220. pRCNTEQU$25%
  221. &EQU$26
  222. 'EQU&+1
  223. (EQU'+1
  224. )EQU(+1
  225. -EQU$2D
  226. .EQU-+1
  227. /EQU.+1
  228. :EQU$3A
  229. ;EQU:+1
  230. <EQU;+1
  231. =EQU<+1
  232. >EQU=+1
  233. ?EQU>+1
  234. aEQU$41
  235. bEQUa+1
  236. cEQUb+1
  237. dEQUc+1
  238. eEQUd+1
  239. fEQUe+1
  240. gEQUf+1
  241. hEQUg+1
  242. iEQUh+1
  243. jEQUi+1
  244. kEQUj+1
  245. lEQUk+1
  246. mEQUl+1
  247. nEQUm+1
  248. oEQUn+1
  249. pEQUo+1
  250. qEQUp+1
  251. rEQUq+1
  252. sEQUr+1
  253. tEQUs+1
  254. uEQUt+1
  255. vEQUu+1
  256. wEQUv+1
  257. xEQUw+1
  258. yEQUx+1
  259. zEQUy+1
  260. [EQUz+1
  261. \EQU[+1
  262. ]EQU\+1
  263. ^EQU]+1
  264. _EQU^+1
  265. {$60}EQU$60
  266. AEQU{$60}+1
  267. BEQUA+1
  268. CEQUB+1
  269. DEQUC+1
  270. EEQUD+1
  271. FEQUE+1
  272. GEQUF+1
  273. HEQUG+1
  274. IEQUH+1
  275. JEQUI+1
  276. KEQUJ+1
  277. LEQUK+1
  278. MEQUL+1
  279. NEQUM+1
  280. OEQUN+1
  281. PEQUO+1
  282. QEQUP+1
  283. REQUQ+1
  284. SEQUR+1
  285. TEQUS+1
  286. UEQUT+1
  287. VEQUU+1
  288. WEQUV+1
  289. XEQUW+1
  290. YEQUX+1
  291. ZEQUY+1
  292. {$7b}EQUZ+1
  293. {$7c}EQU{$7b}+1
  294. {$7d}EQU{$7c}+1
  295. {$7e}EQU{$7d}+1
  296.  ***   vARIABLES
  297. R0LEQU2
  298. R0HEQU3
  299. R1LEQU4
  300. R1HEQU5
  301. R2LEQU6
  302. R2HEQU7
  303. R3LEQU8
  304. R3HEQU9
  305. R4LEQU10
  306. R4HEQU11
  307. R5LEQU12
  308. R5HEQU13
  309. R6LEQU14
  310. R6HEQU15
  311. R7LEQU16
  312. R7HEQU17
  313. R8LEQU18
  314. R8HEQU19
  315. R9LEQU20
  316. R9HEQU21
  317. R10LEQU22
  318. R10HEQU23
  319. R11LEQU24
  320. R11HEQU25
  321. R12LEQU26
  322. R12HEQU27
  323. R13LEQU28
  324. R13hEQU29
  325. R14LEQU30
  326. R14HEQU31
  327. R15LEQU32
  328. R15HEQU33
  329. A0LEQU$FB
  330. A0HEQU$FC
  331. A1LEQU$FD
  332. A1HEQU$FE
  333. A2LEQU$70
  334. A2HEQU$71
  335. A3LEQU$72
  336. A3HEQU$73
  337. A4LEQU$74
  338. A4HEQU$75
  339. A5LEQU$76
  340. A5HEQU$77
  341. A6LEQU$78
  342. A6HEQU$79
  343. A7LEQU$7A
  344. A7HEQU$7B
  345. A8LEQU$7C
  346. A8HEQU$7D
  347. A9LEQU$7E
  348. A9HEQU$7F
  349. DSKbbFEQU$8000
  350. FLhEADEQU$8100
  351. dIRhDEQU$8200
  352. tRsCtBEQU$8400
  353. eNTRbFEQU$8500
  354. CURdRVEQU$8489
  355. DSKoPfEQU$848A
  356. KYdATAEQU$8504
  357. MSdATAEQU$8505
  358. ***
  359. bLACKOUT 2
  360. ***cODE STARTS HERE.
  361. BEGINJMPSTARTJUMP PAST VARIABLES, TABLES, ETC...
  362. SCRCOLMEM1STORAGE FOR SCREEN COLORS
  363. BORDRCMEM1STORAGE FOR BORDER COLOR
  364. POINTPWRDPROCSSPOINTER TO PROCESS TABLE
  365. AHDPNTWRDAHEADPOINTER TO POSITION IN fILLrAM TABLE THAT INDICATES SCREEN COLORS
  366. DATAPTWRDSPDATAPOINTER TO SPRITE DATA
  367. XPLACEWRD160INITIAL XPOS OF SPRITE
  368. YPLACEBYT90INITIAL YPOS OF SPRITE
  369. PROCSSWRDPRRTN1,1PROCESS TABLE: TWO PROCESSES
  370. WRDPRRTN2,1
  371. PRRTN1LDAKYdATAPROCESS 1: CHECK FOR "R" KEY...
  372. CMP#$72"
  373. ESTART, OR 
  374. ESET, OR WHATEVER
  375. BNENOTYETR HIT?
  376. LDA#0YES, RESTORE COLORS...
  377. STAKYdATACLEAR KEYdATA INPUT
  378. JSRiNITioGET ACCESS TO vic CHIP
  379. LDABORDRC
  380. STA53280RESTORE OLD BORDER COLOR
  381. JSRdONEioRESTORE geos MEMORY CONFIGURATION
  382. LDAAHDPNTSET A0 TO POINT TO TABLE POSITION FOR SCREEN COLORS...
  383. STAA0L
  384. LDAAHDPNT+1
  385. STAA0H
  386. LDASCRCOLGET OLD SCREEN COLORS
  387. LDY#0
  388. STA(A0L),YSET COLOR TO BE STORED IN COLOR MEMORY
  389. JSRI_fLrMI_fILLrAM
  390. WRD10001000 LOCATIONS
  391. WRD$8C00STARTING AT BEGINNING OF COLOR MEMORY
  392. AHEADMEM1COLORS TO USE WILL GO HERE
  393. JMPedSKtPeNTERdESKtOP, DONE
  394. NOTYETRTS"R" WAS NOT HIT, DO NOTHING
  395. PRRTN2LDA#2PROCESS 2: MOVE SPRITE...
  396. STAR3LSPRITE #2
  397. LDAXPLACESET SPRITE XPOS...
  398. STAR4L
  399. LDAXPLACE+1
  400. STAR4H
  401. LDAYPLACESET SPRITE YPOS...
  402. STAR5L
  403. JSRpOSsPRpOSsPRITE (POSITION SPRITE)
  404. LDAXPLACEFIND NEW X AND Y POSITIONS...
  405. CMP#6060 + 1*256 IS AT RIGHT EDGE
  406. BNEONEMORLOW BYTE 60?
  407. LDAXPLACE+1YES, TEST HIGH BYTE...
  408. BEQONEMORHIGH BYTE 1?
  409. LDA#0YES, PUT XPOS AT LEFT EDGE...
  410. STAXPLACE
  411. STAXPLACE+1
  412. LDAYPLACEMOVE YPOS DOWN...
  413. CMP#178178 IS AT BOTTOM
  414. BNEDOWN1YPOS ALREADY AT BOTTOM?
  415. LDA#2YES, PUT YPOS AT TOP...
  416. STAYPLACE
  417. RTSDONE
  418. DOWN1INCYPLACENO, MOVE YPOS DOWN FOUR SCAN LINES...
  419. INCYPLACE
  420. INCYPLACE
  421. INCYPLACE
  422. RTSDONE
  423. ONEMORLDAXPLACENOT AT RIGHT EDGE, MOVE RIGHT BY TWO...
  424. ADC#2
  425. STAXPLACE
  426. BCCZZYZXOVER HORIZONTAL "SEAM"?
  427. INCXPLACE+1YES, INCREMENT HIGH BYTE
  428. ZZYZXRTSDONE
  429. ***tHIS IS THE INITIALIZATION CODE.
  430. ***iT BLANKS THE SCREEN, SAVING THE OLD SCREEN COLORS.
  431. ***iT THEN DISPLAYS THE "active" SPRITE
  432. ***AND STARTS THE TWO PROCESSES.
  433. STARTJSRnEWdSKnEWdISK
  434. JSRmSEoFFmOUSEoFF (BLANKS MOUSE)
  435. LDA$8C00REPRESENTATIVE COLOR BYTE FROM MATRIX
  436. STASCRCOLSAVE IT FOR RESTORING COLORS LATER
  437. JSRI_fLrMI_fILLrAM
  438. WRD1000NUMBER OF BYTES OF COLOR MEMORY
  439. WRD$8C00COLOR MEMORY STARTS HERE
  440. BYT0FOREGROUND & BACKGROUND BOTH 0 (BLACK)
  441. JSRiNITioGET ACCESS TO vic CHIP
  442. LDA53280GET BORDER COLOR
  443. STABORDRCSAVE IT FOR RESTORING COLOR LATER
  444. LDA#00 = BLACK
  445. STA53280MAKE BORDER BLACK
  446. LDA#1111 = DARK GREY
  447. STA53289MAKE "active" SPRITE (#2) DARK GREY
  448. JSRdONEioRESTORE geos MEMORY CONFIGURATION
  449. LDA#2DRAW SPRITE #2...
  450. STAR3L
  451. LDADATAPTSET POINTER TO PICTURE...
  452. STAR4L
  453. LDADATAPT+1
  454. STAR4H
  455. JSRdRAWsPdRAWsPRITE
  456. LDA#2TURN ON SPRITE #2...
  457. STAR3L
  458. JSReNBLsPeNABLsPRITE
  459. LDAPOINTPSET POINTER TO PROCESS TABLE...
  460. STAR0L
  461. LDAPOINTP+1
  462. STAR0H
  463. LDA#22 PROCESSES
  464. JSRiNITpRiNITpROCESSES
  465. LDX#0PROCESS 1
  466. JSRrSTRTprESTARTpROCESS (ACTIVATE PROCESS 1)
  467. LDX#1PROCESS 2
  468. JSRrSTRTp
  469. rESTARTpROCESS (ACTIVATE PROCESS 2)
  470. RTSDONE
  471. SPDATABYT0,%01111110,0DATA FOR "active" SPRITE PICTURE...
  472. BYT1,%11100011,128
  473. BYT3,%10100111,%11000000
  474. BYT7,%00111110,%11100000
  475. BYT7,0,%11100000
  476. BYT15,1,%11110000
  477. BYT15,1,%11110000
  478. BYT15,%10011011,%11110000
  479. BYT15,%10111101,%11110000
  480. BYT15,%10111111,%11110000
  481. BYT15,%10001111,%11110000
  482. BYT7,7,%11100000
  483. BYT7,%10000111,%11100000
  484. BYT3,%11001111,%11000000
  485. BYT1,%11101111,128
  486. BYT0,%01101110,0
  487. BYT%01100011,%01110101,%00010111
  488. BYT%10010100,%00100101,%00010100
  489. BYT%11110100,%00100101,%00010110
  490. BYT%10010100,%00100100,%10100100
  491. BYT%10010011,%00100100,%01000111
  492. BYT0PLACE HOLDER BYTE
  493.